<?php
/**
 ***** 扶摇而上、抱守本真 ******
 * @author Dana
 * @Date 2021/7/9
 */

// 对称二叉树
// 两个节点相等 且 左节点的左子树等于右节点的右子树 且 左节点的右子树等于右节点的左子树，为镜像
/***
 *╱╲
 *          1
 *        ╱  ╲
 *       2     2
 *      ╱ ╲   ╱ ╲
 *     3   4 4   3
 */

class MirrorTree{

    // 两个节点同时为空 true,两个节点其中一个为空 false
    //两个节点相等 且 左节点的左子树等于右节点的右子树 且 左节点的右子树等于右节点的左子树
    public function isSymmetric($root)
    {
        return $this->isMirror($root,$root);
    }

    public function isMirror($t1,$t2)
    {
        if($t1 == null && $t2 == null) return true;
        if($t1 == null || $t2 == null) return false;
        if($t1->val == $t2->val && $this->isMirror($t1->right,$t2->left) && $this->isMirror($t2->left,$t2->right)){
            return true;
        }
    }
}

